perm filename PRM11.PAL[KL,SYS]3 blob
sn#213640 filedate 1976-04-26 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00043 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00005 00002 .SBTTL *PRM11* DECSYSTEM10 PDP-11 PROGRAM/SUBROUTINE PARAMETERS, 4-AUG-75
C00007 00003 .SBTTL EMT DEFINITIONS
C00010 00004 TELETYPE OUTPUT DEFINITIONS
C00013 00005 MISCELLANEOUS FUNCTIONS
C00016 00006 COMMUNICATION ROUTINES
C00019 00007 DFXCT= EMT!114 DIAGNOSTIC FUNCTION EXECUTE
C00021 00008 .SBTTL MACRO DEFINITIONS
C00023 00009 BASIC MACROS
C00024 00010 .MACRO SL REG,NUM
C00025 00011 STANDARD PROGRAM ASSIGNMENTS
C00027 00012 BIT ASSIGNMENTS
C00028 00013 CHARACTERS USED
C00030 00014 .SBTTL DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
C00033 00015 BIT ASSIGNMENTS FOR 10/11 INTERFACE REGISTERS
C00036 00016 BIT ASSIGNMENTS FOR DIAG2 (WRITE)
C00038 00017 BIT ASSIGNMENTS FOR STATUS (WRITE)
C00041 00018 CLOCK CONTROL FUNCTIONS
C00043 00019 CRAM FUNCTIONS
C00045 00020 DATA PATH CONTROL FUNCTIONS
C00046 00021 .SBTTL KL10 EBOX MACRO DEFINITIONS, 4-JUNE-75
C00048 00022 MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
C00050 00023 THIS IS A MACRO TO WAIT FOR A DONE FLAG
C00052 00024 .SBTTL *BBD* DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 2-JAN-75
C00055 00025 THE FOLLOWING MACRO (DTEVEC) DYNAMICLY COMPUTES THE INTERRUPT
C00058 00026 BIT ASSIGNMENTS FOR DIAG1 (WRITE)
C00060 00027 BIT ASSIGNMENTS FOR STATUS (WRITE)
C00062 00028 FUNCTION SELECT CODES
C00064 00029 READ0 =110 PI (READ STATUS 0)
C00065 00030 .SBTTL *BBD* KL10 EBOX MACRO DEFINITIONS, 4-MAR-75
C00067 00031 MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
C00069 00032 THIS IS A MACRO TO WAIT FOR A DONE FLAG
C00071 00033
C00072 00034 .SBTTL DEVICE SYMBOL DEFINITIONS, 4-JUNE-75
C00074 00035 .SBTTL KW11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
C00075 00036 .SBTTL DL11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
C00078 00037 .SBTTL DH11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
C00081 00038 BIT DEFINITIONS FOR "DHLPR"- LINE PARAMETER REGISTER.
C00083 00039 .SBTTL TA11 (CASSETTE) DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
C00085 00040 .SBTTL RX11/RX01 (FLOPPY) REGISTERS AND BIT DEFINITIONS, 22-JULY-75
C00087 00041 .SBTTL TC11 (DECTAPE) DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
C00089 00042 .SBTTL RH11/RP04 REGISTER AND BIT DEFINITIONS, 4-JUNE-75
C00092 00043 .SBTTL LP20 REGISTER AND BIT DEFINITIONS, 27-JUNE-75
C00095 ENDMK
C⊗;
.SBTTL *PRM11* DECSYSTEM10 PDP-11 PROGRAM/SUBROUTINE PARAMETERS, 4-AUG-75
;PROGRAM CONTROL SWITCHES
ABORT= 100000 ;ABORT AT PROGRAM PASS COMPLETION
RSTART= 40000 ;RESTART TEST
TOTALS= 20000 ;PRINT TEST TOTALS
NOPNT= 10000 ;INHIBIT ALL PRINT OUT (EXCEPT FORCED)
PNTLPT= 4000 ;PRINT ON LINE-PRINTER
DING= 2000 ;RING TTY BELL ON ERROR
LOOPER= 1000 ;LOOP ON ERROR
ERSTOP= 400 ;HALT ON ERROR
PALERS= 200 ;PRINT ALL ERRORS
RELIAB= 100 ;RELIABILITY RUN MODE
TXTINH= 40 ;TEXT INHIBIT
INHPAG= 20 ;INHIBIT PAGING (PDP-10)
MODDVC= 10 ;MODIFY DEVICE CODE (PDP-10)
INHCSH= 4 ;INHIBIT CACHE (PDP-10)
OPRSEL= 2 ;OPERATOR SELECTION
CHAIN= 1 ;CHAIN CONTROL SWITCH
.SBTTL EMT DEFINITIONS
;OPERATOR DEFINITION - SUBROUTINE CALLS
FATAL= EMT!0 ;FATAL PROGRAMMING ERROR.
ERRHLT= EMT!1 ;PROGRAM HALT, ONLY IF "ERSTOP" SWITCH SET
PRGHLT= EMT!2 ;PROGRAM HALT, DON'T CHECK SWITCH
RUNLP= EMT!3 ;CONSOLE IDLE RUN LOOP
DFLEGAL=EMT!226 ;DIAGNOSTIC FUNCTION LEGALITY CHECK
;TELETYPE INPUT DEFINITIONS
; *** CALL SEQUENCE ***
; TT----
; RETURN, C BIT SET FOR NO/ERROR RESPONSE
TTILIN= EMT!4 ;READ TTY LINE INPUT INTO BUFFER
TTILNW= EMT!224 ;READ TTY LINE INPUT, WAIT FOREVER
TTICCL= EMT!225 ;PROCESS TTY INPUT FROM INDIRECT CCL BUFFER
TTICHR= EMT!5 ;INPUT A CHARACTER FROM BUFFER
TTBACK= EMT!144 ;BACKUP INPUT POINTER
TTLOOK= EMT!6 ;LOOK FOR A TTY INPUT
TTIOCT= EMT!7 ;INPUT AN OCTAL NUMBER FROM BUFFER
TTCOCT= EMT!10 ;INPUT & CHECK OCTAL, RTN IF OK
TTOCTE= EMT!200 ;INPUT EVEN OCTAL NUMBER
TTIDEC= EMT!11 ;INPUT A DECIMAL NUMBER FROM BUFFER
TTIYES= EMT!12 ;ASK YES-NO, N BIT ON NO, C BIT SET ON ERROR
TTALTM= EMT!13 ;ALT-MODE CHECK, C BIT SET IF NON-ALT-MODE
TTI36= EMT!14 ;READ 36 DIGIT NUMBER FROM BUFFER
TTIBRK= EMT!15 ;GET NUMBER INPUT BREAK CHARACTER
TTISDL= EMT!16 ;SPACE DELETE, C BIT SET ON NON-NUMBER
TTISDO= EMT!17 ;SPACE DELETE & OCTAL INPUT, RTN IF OK
TTIS36= EMT!20 ;SPACE DELETE & 36BIT INPUT, RTN IF OK
TTICRA= EMT!21 ;INPUT C-RAM ADDRESS
TTITRM= EMT!22 ;CHECK INPUT TERMINATOR, RTN IF OK
TTBTRM= EMT!23 ;BACKUP, THEN "
TTERM= EMT!201 ;NUMBER TERMINATION CHECK, C BIT SET IF ERROR
TTPINI= EMT!217 ;INITIALIZE INPUT & OUTPUT BUFFER POINTERS
;TELETYPE OUTPUT DEFINITIONS
; *** CALL SEQUENCE ***
; MOV ARG,R0 ;IF CALL REQUIRES AN ARGUMENT
; P-----
PNTAL= EMT!24 ;PRINT ASCII LINE, ADDRESS IN R0
$PMSG= EMT!25 ;PRINT MESSAGE, TRAILING PARAMETER
$PMSGR= EMT!26 ;PRINT MESSAGE, CONDITIONAL ON "RPTFLG"
PNTCHR= EMT!27 ;PRINT ASCII CHARACTER IN R0
PNTCI= EMT!214 ;PRINT CHAR IMMEDIATE, TRAILING CHARS
PNTNBR= EMT!30 ;PRINT NUMBER
PCRLF= EMT!31 ;PRINT CR-LF
PSPACE= EMT!32 ;PRINT A SPACE
PSLASH= EMT!33 ;PRINT A SLASH
PCOMMA= EMT!34 ;PRINT A COMMA
PTAB= EMT!227 ;PRINT A TAB
PNTOCT= EMT!35 ;PRINT OCTAL NUMBER IN R0
PNTOCS= EMT!36 ;PRINT OCTAL IN R0, SUPPRESS LEADING ZEROS
PNTDEC= EMT!37 ;PRINT DECIMAL NUMBER IN R0
PNT18= EMT!40 ;PRINT LOWER 18 OF 36 BIT NUMBER
PNT23= EMT!41 ;PRINT LOWER 23 BITS OF 36 BIT NUMBER
PNT22= EMT!41 ; " OLD PNT23 "
PNT36= EMT!42 ;PRINT 36 BIT NUMBER, ADDRESS IN R0
PNT36B= EMT!134 ;PRINT 36 BIT NUMBER IN BINARY
PNTADR= EMT!137 ;PRINT PDP-10 ADDRESS
PFORCE= EMT!43 ;SET FORCED PRINTOUT FLAG
PNORML= EMT!44 ;CLEAR FORCED PRINTOUT FLAG
PBELL= EMT!45 ;DING THE TTY BELL
PNTODC= EMT!46 ;PRINT SPECIFIED OCTAL DIGITS
PNTODT= EMT!47 ;PRINT SPECIFIED DIGITS, TRAILING PARAMETER
PRINTT= EMT!151 ;PRINT, TTY OUTPUT
PTTY= EMT!152 ;PRINT, TTY DRIVER
PLPT= EMT!153 ;PRINT, LPT DRIVER
PLDBUF= EMT!154 ;PRINT, LOAD BUFFER
PNTBAK= EMT!177 ;PRINT, BACKUP OUTPUT INSERTION POINTER
PNTRST= EMT!215 ;PRINT, OUTPUT POINTERS RESET
;MISCELLANEOUS FUNCTIONS
REGSAV= EMT!50 ;SAVE R0 THRU R5
REGRST= EMT!51 ;RESTORE R0 THRU R5
SHIFTR= EMT!53 ;SHIFT R0 RIGHT, TRAILING PARAMETER
SHIFTL= EMT!54 ;SHIFT R0 LEFT, TRAILING PARAMETER
PROL36= EMT!146 ;ROTATE LEFT 36 BITS
SETFLG= EMT!55 ;SET -1 TO FLAG, TRAILING PARAMETER
MULTPY= EMT!72 ;MULTIPLY
TDELAY= EMT!56 ;SMALL DELAY
SWITCH= EMT!57 ;READ THE SWITCH REGISTER, RETURNED IN R0
SWTSAM= EMT!60 ;RETURN PRESENT STORED SWITCHES IN R0
EOP= EMT!61 ;END OF PASS ROUTINE, RETURNS IF NOT COMPLETED
ERREOP= EMT!62 ;ERROR END OF PASS
EOPSET= EMT!63 ;SET END OF PASS PRINTOUT INTERVAL
;DEVICE ROUTINES
NAMEXT= EMT!206 ;FILE NAME.EXT PROCESS
DTAFILE=EMT!207 ;DECTAPE FILE SELECTION
RPFILE= EMT!210 ;RP04 FILE SELECTION
R50UPK= EMT!155 ;RAD50 TO ASCII UNPACK
ASCR50= EMT!165 ;ASCII TO RAD50 CONVERSION
DTINIT= EMT!156 ;DECTAPE INITIALIZATION
RPINIT= EMT!157 ;RP04 INITIALIZATION
RPLOAD= EMT!166 ;RP04 LOAD PACK
DVDATA= EMT!160 ;DEVICE DATA BLOCK READ
DTRDFL= EMT!211 ;DECTAPE READ FILE
DTWTFL= EMT!212 ;DECTAPE WRITE FILE
DTBASE= EMT!213 ;RETURN DECTAPE PARAMETER BASE ADDRESS
DTREAD= EMT!161 ;DECTAPE READ
DTWRT= EMT!205 ;DECTAPE WRITE
RPFIND= EMT!167 ;RP04 FIND FILE
RPLKUP= EMT!170 ;RP04 FILE DIRECTORY LOOKUP
RPRDFL= EMT!171 ;RP04 READ FILE
RPWRFL= EMT!172 ;RP04 WRITE FILE
RPREAD= EMT!162 ;RP04 READ
RPWRIT= EMT!173 ;RP04 WRITE
RPADDR= EMT!174 ;RP04 ADDRESS CALCULATION
RPBASE= EMT!175 ;RETURN RP04 PARAMETER BLOCK BASE ADDRESS
RPERROR=EMT!237 ;RP04 ERROR REPORTER
DVFRAM= EMT!163 ;DEVICE DATA FRAME READ
DVWRD= EMT!164 ;DEVICE WORD READ
RXFILE= EMT!230 ;RX11/RX01 FLOPPY FILE SELECTION
RXINIT= EMT!231 ; FLOPPY INITIALIZATION
RXRDFL= EMT!232 ; FLOPPY READ FILE
RXWTFL= EMT!233 ; FLOPPY WRITE FILE
RXBASE= EMT!234 ; FLOPPY PARAMETER BLOCK BASE ADDRESS
RXREAD= EMT!235 ; FLOPPY READ
RXWRT= EMT!236 ; FLOPPY WRITE
;COMMUNICATION ROUTINES
COMCMD= EMT!220 ;COMMUNICATIONS COMMAND
COMRTRY=EMT!221 ;COMMUNICATIONS COMMAND RETRY
COMENQ= EMT!222 ;COMMUNICATIONS ENQUIRY
COMEOT= EMT!223 ;COMMUNICATIONS END OF TRANSMISSION
COMLIN= EMT!64 ;COMMUNICATIONS LINE INPUT
COMSND= EMT!65 ;COMMUNICATIONS LINE OUTPUT
COMACK= EMT!66 ;COMMUNICATIONS ACKNOWLEDGE
COMNAK= EMT!67 ;COMMUNICATIONS NEGATIVE ACKNOWLEDGE
COMCLR= EMT!70 ;COMMUNICATIONS CLEAR
COMCTL= EMT!71 ;COMMUNICATIONS CONTROL SEQUENCE
;KL10 ROUTINES
WCRAM= EMT!73 ;WRITE IN TO C-RAM
RCRAM= EMT!74 ;READ THE C-RAM
WWADR= EMT!75 ;WRITE C-RAM ADDRESS
MICNUL= EMT!203 ;C-RAM FILL WITH 0'S
MICFIL= EMT!204 ;C-RAM FILL WITH 1'S
MRESET= EMT!76 ;MASTER RESET
TENSW= EMT!145 ;PDP-10 SWITCHES
TENSP= EMT!77 ;TURN OFF TEN RUNNING
TENCHR= EMT!176 ;PDP-10 LAST TYPED CHARACTER
SM= EMT!100 ;START MACHINE
EXCT= EMT!101 ;EXECUTE PDP10 INSTR, REQUIRES SM
LODAR= EMT!102 ;SPECIAL AR LOAD FOR EXCT AND MBOX TEST
SETMPH= EMT!147 ;SET M-BOX PHASE
ECLOK= EMT!135 ;E BOX CLOCK
ESYNC= EMT!136 ;E BOX SYNC
EXAM= EMT!103 ;EXAMINE 10 MEMORY
EXAMT= EMT!104 ;EXAMINE 10 MEMORY, TRAILING PARAMETERS
DPOS= EMT!105 ;DEPOSIT INTO 10 MEMORY
DPOST= EMT!106 ;DEPOSIT INTO 10 MEMORY, TRAILING PARAMETERS
DPOSVR= EMT!107 ;DEPOSIT AND VERIFY 10 MEMORY
DPOSVT= EMT!110 ;DEPOSIT AND VERIFY 10 MEMORY, TRAILING PARAMETERS
D10MON= EMT!111 ;DEPOSIT -1 INTO 10 FLAG WORD
D10ZRO= EMT!112 ;PDP-10 MEMORY ZERO
CMPR36= EMT!52 ;COMPARE 5 BYTE 36-BIT WORD
DTEBAS= EMT!113 ;RETURN DTE20 BASE ADDRESS
DFXCT= EMT!114 ;DIAGNOSTIC FUNCTION EXECUTE
DFXCTT= EMT!115 ;DF EXECUTE, TRAILING PARAMETER
DFRD= EMT!116 ;DIAGNOSTIC FUNCTION READ
DFRDT= EMT!140 ;DF READ, TRAILING PARAMETER
DFRDMV= EMT!117 ;DIAGNOSTIC FUNCTION READ & MOVE
DFWRT= EMT!120 ;DIAGNOSTIC FUNCTION WRITE
DFWRTT= EMT!141 ;DF WRITE, TRAILING PARAMETERS
DFWIR= EMT!121 ;DIAGNOSTIC FUNCTION WRITE IR
DFSCLK= EMT!122 ;DIAGNOSTIC FUNCTION, SINGLE STEP CLOCK
DFPC= EMT!123 ;DIAGNOSTIC FUNCTION READ PC
DFVMA= EMT!124 ;DIAGNOSTIC FUNCTION READ VMA
DFADB= EMT!125 ;DIAGNOSTIC FUNCTION READ ADDRESS BREAK
DFVMAH= EMT!150 ;DIAGNOSTIC FUNCTION READ VMA HELD
RDRAM= EMT!126 ;READ D-RAM
WDRAM= EMT!127 ;WRITE D-RAM
DRAMAD= EMT!130 ;SELECT D-RAM ADDRESS
CLKPRM= EMT!202 ;RETURN ADDRESS OF "CLKDFL" WORD
BURST= EMT!131 ;BURST M-BOX CLOCK
PNTCPU= EMT!132 ;PRINT CPU, C-RAM & REGISTERS
PNTCRM= EMT!142 ;PRINT C-RAM, LOGICAL FIELD FORMAT
PNTDRM= EMT!143 ;PRINT D-RAM, LOGICAL FIELD FORMAT
PRGCMD= EMT!133 ;PROGRAM COMMAND
PRGNPT= EMT!216 ;PROGRAM COMMAND, NO PRINT
.SBTTL MACRO DEFINITIONS
.IIF P2, $$CLIT==$$LITT ;LITERAL STORAGE ASSIGNMENT
.IELSE $$CLIT==2000
.MACRO PMSG $ARG
$PMSG
$$CLIT
.NLIST SRC
$$CLC=.
.=$$CLIT
.ASCIZ ↔$ARG↔
$$CLIT=.
.=$$CLC
.LIST SRC
.ENDM
.MACRO PMSGR $ARG
$PMSGR
$$CLIT
.NLIST SRC
$$CLC=.
.=$$CLIT
.ASCIZ ↔$ARG↔
$$CLIT=.
.=$$CLC
.LIST SRC
.ENDM
.MACRO PNTMSG $ARG
MOV #$$CLIT,R0
PNTAL
.NLIST SRC
$$CLC=.
.=$$CLIT
.ASCIZ ↔$ARG↔
.EVEN
$$CLIT=.
.=$$CLC
.LIST SRC
.ENDM
.MACRO EXIT
JMP $EXIT
.ENDM
.MACRO EXITSKP
JMP $EXITS
.ENDM
.MACRO EXITERR
JMP $EXITE
.ENDM
;BASIC MACROS
.MACRO PUSH A
.NLIST SRC
.IRP B,<A>
MOV B,-(SP) ;PUSH B ON STACK
.ENDM
.LIST SRC
.ENDM
.MACRO POP A
.NLIST SRC
.IRP B,<A>
MOV (SP)+,B ;POP STACK INTO B
.ENDM
.LIST SRC
.ENDM
.MACRO MULT SOURCE,REG
PUSH SOURCE
PUSH REG
MULTPY
POP REG
.NTYPE X,REG
.IF EQ X&1
.IFT
POP REG+1
.IFF
INC SP
INC SP
.ENDC
.ENDM
.MACRO .LIT $LTAG,$LARG
$$CLC=.
.=$$CLIT
.EVEN
$LTAG=.
.IIF B <$LARG>,0
.IIF NB <$LARG>,$LARG
.EVEN
$$CLIT=.
.=$$CLC
.ENDM
.MACRO SL REG,NUM
.NLIST SRC
.IF GT NUM-7
.IFT
SWAB REG
.REPT NUM-8.
ASL REG
.ENDR
.IFF
.REPT NUM
ASL REG
.ENDR
.ENDC
.LIST SRC
.ENDM
.MACRO SR REG,NUM
.NLIST SRC
.IF GT NUM-7
.IFT
SWAB REG
.REPT NUM-8
ASR REG
.ENDR
.IFF
.REPT NUM
ASR REG
.ENDR
.ENDC
.LIST SRC
.ENDM
.MACRO EXOR REG,DESTIN,SCRTCH
.IF NB SCRTCH
.IFT
MOV REG,SCRTCH
BIC DESTIN,SCRTCH
BIC REG,DESTIN
BIS SCRTCH,DESTIN
.IFF
MOV REG,-(SP)
BIC DESTIN,(SP)
BIC REG,DESTIN
BIS (SP)+,DESTIN
.ENDC
.ENDM
;STANDARD PROGRAM ASSIGNMENTS
.IIF NDF STACK, STACK==157776 ;INITIAL STACK POINTER
.IIF NDF CONSOL,CONSOL==100000 ;CONSOLE START ADDRESS
CBIT= 1 ;CARRY BIT
NBIT= 10 ;NEGATIVE BIT
ZBIT= 4 ;ZERO BIT
VBIT= 2 ;OVERFLOW BIT
TBIT= 20 ;TRAP BIT
;REGISTER DEFINITIONS
R0= %0 ;GENERAL REGISTERS
R1= %1
R2= %2
R3= %3
R4= %4
R5= %5
R6= %6
SP= %6 ;STACK POINTER
PC= %7 ;PROGRAM COUNTER
;PDP11/40 STANDARD TRAP VECTOR ASSIGNMENTS
RESVED= 0 ;RESERVED
ERRVEC= 4 ;TIME OUT, BUS ERROR
RESVEC= 10 ;RESERVED INSTRUCTION
TRTVEC= 14 ;BREAK POINT VECTOR
TBITVEC=14
BPTVEC= 14
IOTVEC= 20 ;IOT TRAP VECTOR
PWRVEC= 24 ;POWER FAIL TRAP VECTOR
EMTVEC= 30 ;EMT TRAP VECTOR
TRAPVEC=34 ;"TRAP" TRAP VECTOR
TKVEC= 60 ;TTY KEYBOARD VECTOR
TPVEC= 64 ;TTY PRINTER VECTOR
TA11= 260 ;CASSETTE TAPE READER
TC11= 214 ;DECTAPE VECTOR
;PDP11/40 STANDARD ADDRESS ASSIGNMENTS
PS= 177776 ;CPU STATUS
STKLMT= 177774 ;STACK LIMIT
SWR= 177570 ;CONSOLE SWITCH REGISTER
TTODBR= 177566 ;TTY OUT DBR
TTOCSR= 177564 ;TTY OUT CSR
TTIDBR= 177562 ;TTY IN DBR
TTICSR= 177560 ;TTY IN CSR
XORCR= 174200
XORSR= 174202
;BIT ASSIGNMENTS
BIT00= 1
BIT0= BIT00
BIT01= 2
BIT1= BIT01
BIT02= 4
BIT2= BIT02
BIT03= 10
BIT3= BIT03
BIT04= 20
BIT4= BIT04
BIT05= 40
BIT5= BIT05
BIT06= 100
BIT6= BIT06
BIT07= 200
BIT7= BIT07
BIT08= 400
BIT8= BIT08
BIT09= 1000
BIT9= BIT09
BIT10= 2000
BIT11= 4000
BIT12= 10000
BIT13= 20000
BIT14= 40000
BIT15= 100000
;PRIORITY ASSIGNMENTS
PR0= 000
PR1= 040
PR2= 100
PR3= 140
PR4= 200
PR5= 240
PR6= 300
PR7= 340
.IIF DF SAILVR, CPUPR==PR5 ;CLOCK INTERRUPTS ARE PERMITTED
.IIF NDF SAILVR, CPUPR==PR7
;CHARACTERS USED
MSWCHR= 030 ; MONITOR TO "KLDCP" SWITCH CHAR, CONTROL X
TEXTERM=0 ; TERMINATES TEXT
TAB= 11 ; TAB
CNTRLI= 11 ; CONTROL-I (TAB)
LF= 12 ; LINE FEED
VT= 13 ; VERTICAL TAB
FF= 14 ; FORM FEED
CR= 15 ; CARRIAGE RETURN
BELL= 7 ; BELL
BLANK= 40 ; BLANK (SPACE)
SPACE= 40 ; SPACE
COMMA= 54 ; COMMA
SLASH= 57 ; SLASH
BKSLH= 134 ; BACK SLASH
BKARW= 137 ; BACK ARROW
XOFF= 023 ; X-OFF (CONTROL S)
XON= 021 ; X-ON (CONTROL Q)
CNTRLO= 017 ; CONTROL O
CNTRLU= 025 ; CONTROL U
CNTRLA= 001 ; CONTROL A
CNTRLC= 003 ; CONTROL C
CNTRLD= 004 ; CONTROL D
CNTRLK= 013 ; CONTROL K
CNTRLL= 14 ; CONTROL L
CNTRLR= 022 ; CONTROL R
CNTRLT= 024 ; CONTROL T
CNTRLX= 030 ; CONTROL X
CNTRLZ= 032 ; CONTROL Z
RUBOUT= 177 ; RUB OUT
ALTMOD= 33 ; ALTMODE
ETB= 27 ; END OF TRANSMISSION BLOCK (CONTROL W)
NULL= 026 ; NULL FILLER CHAR
SYN= 001 ; COMMUNICATIONS SYNC CHAR (CONTROL A)
;.NLIST
.IF DF DTEASB
;.LIST
.SBTTL DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
DTEADR= 174400 ;ADDRESS OF (FIRST) DTE20 DEVICE REGISTER BLOCK
DTESIZ= 000040 ;SPACING BETWEEN CONSECUTIVE DTE20'S
DTEMAX= 4 ;MAXIMUM NUMBER OF DTE20'S ON ONE PDP-11
DTESZS= 5 ;SHIFT TO CONVERT DTE ADDRESS TO DTE #
.IF DF DTEDEF
;OFFSETS FROM THE BASE OF THE DTE20 DEVICE REGISTER BLOCK
;TO SPECIFIC 10/11 INTERFACE RAM LOCATIONS AND REGISTERS.
; THE FIRST 12 REGISTERS ARE NOT INITIALIZED BY "INIT" (BECAUSE THEY ARE IN RAMS)
DLYCNT= 00 ;DELAY COUNT (ADDRESS XXXX00)
DEXWD3= 02 ;DEPOSIT OR EXAMINE WORD 3 (ADDRESS XXXX02)
DEXWD2= 04 ;DEPOSIT OR EXAMINE WORD 2 (ADDRESS XXXX04)
DEXWD1= 06 ;DEPOSIT OR EXAMINE WORD 1 (ADDRESS XXXX06)
TENAD1= 10 ;10 ADDRESS WORD 1 FOR DEX (ADDRESS XXXX10)
TENAD2= 12 ;10 ADDRESS WORD 2 FOR DEX (ADDRESS XXXX12)
TO10BC= 14 ;TO10 BYTE COUNT (ADDRESS XXXX14)
TO11BC= 16 ;TO11 BYTE COUNT (ADDRESS XXXX16)
TO10AD= 20 ;TO10 PDP11 MEMORY ADDRESS (ADDRESS XXXX20)
TO11AD= 22 ;TO11 PDP11 MEMORY ADDRESS (ADDRESS XXXX22)
TO10DT= 24 ;TO10 PDP11 DATA WORD (ADDRESS XXXX24)
TO11DT= 26 ;TO11 PDP11 DATA WORD (ADDRESS XXXX26)
; THE LAST 4 REGISTERS ARE INITIALIZED BY "INIT" (BECAUSE THEY ARE IN FLIP-FLOPS)
DIAG1= 30 ;DIAGNOSTIC WORD 1 (ADDRESS XXXX30)
DIAG2= 32 ;DIAGNOSTIC WORD 2 (ADDRESS XXXX32)
STATUS= 34 ;10/11 INTERFACE STATUS WORD (ADDRESS XXXX34)
DIAG3= 36 ;DIAGNOSTIC WORD 3 (ADDRESS XXXX36)
.ENDC
; THE FOLLOWING ARE THE ADDRESSES OF THE DTE20 INTERRUPT VECTORS
DTEIV0= 774 ;INTERRUPT VECTOR FOR DTE20 #0
DTEIV1= 770 ;INTERRUPT VECTOR FOR DTE20 #1
DTEIV2= 764 ;INTERRUPT VECTOR FOR DTE20 #2
DTEIV3= 760 ;INTERRUPT VECTOR FOR DTE20 #3
;BIT ASSIGNMENTS FOR 10/11 INTERFACE REGISTERS
;BIT ASSIGNMENTS FOR TENAD1
PHYS= BIT15 ;EXAMINE/DEP PHYSICAL ADDRESS
USEVIR= BIT14!BIT13 ;EX/DP USER VIRTUAL ADDRESS
XUPT= BIT14 ;EX/DP VIA USER PROCESS TABLE
EXVIRT= BIT13 ;EX/DP EXEC VIRTUAL ADDRESS
DEP= BIT12 ;MODE BIT FOR DEPOSIT (0=EXAMINE)
PRTOFF= BIT11 ;PROTECT OFF
XEPT= 0 ;EX/DP VIA EXEC PROCESS TABLE
;BIT ASSIGNMENTS FOR TO11BC
INT10= BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
ZSTOP= BIT14 ;STOP ON NULL (ZERO) CHARACTER
BYTE2= BIT13 ;TWO EIGHT BIT BYTES PER WORD
TO11BM= BIT13 ;TO-11 BYTE MODE
;BIT ASSIGNMENTS FOR DIAG1 (WRITE)
DS00= BIT15 ;DIAGNOSTIC STATUS
DS01= BIT14 ; "
DS02= BIT13 ; "
DS03= BIT12 ; "
DS04= BIT11 ; "
DS05= BIT10 ; "
DS06= BIT9 ; "
DFUNC= BIT7 ;DOING DIAGNOSTIC FUNCTION (DFRD,DFWRT,DFXCT)
PULSE= BIT4!BIT5 ;SINGLE PULSE THE 10/11 CLOCK (ALSO SETS
;10/11 DIAGNOSTIC MODE)
DCOMST= BIT0 ;DIAGNOSTIC COMMAND START
DCSRT= BIT0 ;DIAGNOSTIC COMMAND START (NEW NAME FOR DCOMST)
DSEND= BIT2 ;SEND THE EBUS DURING DIAGNOSTIC FUNCTION
DIKL10= BIT3 ;KL10 DIAGNOSTIC MODE
D1011= BIT5 ;10/11 INTERFACE DIAGNOSTIC MODE
;BIT ASSIGNMENTS FOR DIAG1 (READ)
TO10= BIT7 ;INTERFACE MAJOR STATE = TO10 TRANSFER
DEX= BIT8 ; " " " = DEPOSIT OR EXAMINE
TO11= BIT6 ; " " " = TO11 TRANSFER
VEC04= BIT4 ;VECTOR INTERRUPT ADDRESS BIT 4
VEC03= BIT3 ; " " " " 3
VEC02= BIT2 ; " " " " 2
HALTLP= BIT9 ;EBOX IS IN HALT LOOP
KLRUN= BIT10 ;RUN FLOP, KL IS EXECUTING INSTRUCTIONS
ERRSTP= BIT11 ;EBOX CLOCK STOPPED DUE TO ERROR
;BIT ASSIGNMENTS FOR DIAG2 (WRITE)
EDONES= BIT14 ;SET EBUS DONE
DRESET= BIT6 ;PERFORM DIAGNOSTIC CLEAR
;BIT ASSIGNMENTS FOR DIAG2 (READ)
;BIT ASSIGNMENTS FOR DIAG3 (WRITE)
SCD= BIT5 ;SHIFT CAPTURED DATA (PARITY ERROR DATA)
CDD= BIT4 ;CLEAR DUPE & DURE ERROR FLAGS
WEP= BIT3 ;WRITE EVEN (BAD) PARITY
CNUPE= BIT1 ;CLEAR NUPE
TO10BM= BIT0 ;TO-10 TRANSFER BYTES FROM THE 11
;BIT ASSIGNMENTS FOR DIAG3 (READ)
RFMAD0= BIT15 ;RFM ADDRESS BIT 0
RFMAD1= BIT14 ; " " " 1
RFMAD2= BIT13 ; " " " 2
RFMAD3= BIT12 ; " " " 3
;BIT ASSIGNMENTS FOR DIAG3 (READ)
SWSLFT= BIT15 ;SWAP SELECT LEFT
CAB08= BIT14 ;CAPTURED UNIBUS ADDRESS BIT 08
DUPE= BIT4 ;DATO UNIBUS PARITY ERROR
DURE= BIT2 ;DATO UNIBUS RECIEVER ERROR
NUPE= BIT1 ;NPR UNIBUS PARITY ERROR
UPECD= BIT13!BIT12!BIT11!BIT10!BIT9 ;UNIBUS PARITY ERR, CAPTURED DATA
;BIT ASSIGNMENTS FOR STATUS (WRITE)
DON10S= BIT15 ;SET TO10 DONE
DON10C= BIT14 ;CLEAR TO10 DONE
ERR10S= BIT13 ;SET TO10 ERROR
ERR10C= BIT12 ;CLEAR TO10 ERROR
INT11S= BIT11 ;SET 10 REQ INTERRUPT (INTERRUPTS 11)
INT11C= BIT10 ;CLEAR 10 REQ INTERRUPT (REMOVES INTERRUPT TO 11)
PERCLR= BIT9 ;CLEAR -11 MEMORY PARITY ERROR
INT10S= BIT8 ;SET REQUEST 10 INTERRUPT (INTERRUPTS 10)
DON11S= BIT7 ;SET TO11 DONE
DON11C= BIT6 ;CLEAR TO11 DONE
INTRON= BIT5 ;ENABLE DTE20 TO INTERRUPT THE 11
EBUSPC= BIT4 ;CLEAR EBUS PARITY ERROR
INTROF= BIT3 ;DISABLE THE DTE20 11-INTERRUPTS
EBUSPS= BIT2 ;SET EBUS PARITY ERROR
ERR11S= BIT1 ;SET TO11 ERROR
ERR11C= BIT0 ;CLEAR TO11 ERROR
;BIT ASSIGNMENTS FOR STATUS (READ)
TO10DN= BIT15 ;TO10 DONE
TO10ER= BIT13 ;TO 10 ERROR (NPR TIMEOUT OR BUS ERROR)
RAMIS0= BIT12 ;DATA OUT OF DTE RAM IS ALL 0S (RFM=0)
TO11DB= BIT11 ;10 REQUESTING 11 INTERRUPT (DOORBELL FROM 10)
DXWRD1= BIT10 ;DEPOSIT OR EXAMINE WORD ONE
D11MPE= BIT9 ;-11 MEMORY PARITY ERROR
TO10DB= BIT8 ;REQUEST 10 INTERRUPT (DOORBELL FROM 11)
TO11DN= BIT7 ;TO11 DONE
EBSEL= BIT6 ;E BUFFER SELECT
NULSTP= BIT5 ;NULL STOP
BPARER= BIT4 ;EBUS PARITY ERROR
RM= BIT3 ;THIS DTE20 IN RESTRICTED MODE
DEXDON= BIT2 ;DEPOSIT OR EXAMINE DONE
TO11ER= BIT1 ;TO 11 ERROR (NPR TIMEOUT OR BUS ERROR)
INTSON= BIT0 ;INTERRUPTS ON, DTE20 ENABLED TO INTERRUPT 11
;CLOCK CONTROL FUNCTIONS
STPCLK= 000 ; STOP CLOCK
STRCLK= 001 ; START CLOCK
SSCLK= 002 ; SINGLE STEP THE MBOX CLOCK
SECLK= 003 ; SINGLE STEP EBOX CLOCK
CECLK= 004 ; CONDITIONAL EBOX CLOCK
CLRMR= 006 ; CLEAR MR RESET
SETMR= 007 ; SET MR RESET
BRCLK= 005 ; BURST THE CLOCK
;CLOCK LOAD FUNCTIONS
LDBRR= 42 ; LOAD BURST REGISTER RIGHT HALF
LDBRL= 43 ; LOAD BURST REGISTER LEFT HALF
LDSEL= 44 ; LOAD SOURCE AND RATE SELECTS
LDDIS= 45 ; LOAD EBOX CLOCK DISTRIBUTION REGISTER
LDCHK1= 46 ; LOAD PARITY CHECK REGISTER (ENABLE BAD PARITY STOP)
LDCHK2= 47 ; LOAD EBOX INTERNAL CHECK REGISTER
;DRAM FUNCTIONS
LDRAM1= 60 ; LOAD A & B FIELDS EVEN
LDRAM2= 61 ; LOAD A & B FIELDS ODD
LDRAM3= 62 ; LOAD COMMON J1-J4
LDRJEV= 63 ; LOAD PARITY & J8-J10 EVEN
LDRJOD= 64 ; LOAD PARITY & J8-J10 ODD
DRAMAB= 133 ; READ D-RAM A & B
DRJ710= 135 ; READ D-RAM J7-J10
DRJ1.4= 134 ; READ D-RAM J1-J4
;IR DRAM CONTROL
DISIOJ= 65 ; DISABLE 7XX & JRST=254
DISACF= 66 ; DISABLE THE IR AC'C
ENIOJA= 67 ; ENABLE 7XX, JRST=254 & IR AC'S
;CRAM FUNCTIONS
LCRAM1= 57 ; LOAD C-RAM DATA
LCRAM2= 56
LCRAM3= 55
LCRAM4= 54
LCRAM5= 53
LCRDAL= 52 ; LOAD CRAM ADDRESS LEFT (00-04)
LCRDAR= 51 ; LOAD CRAM ADDRESS RIGHT (05-10)
RCRAM1= 147 ; READ C-RAM DATA
RCRAM2= 146
RCRAM3= 145
RCRAM4= 144
RCSPEC= 141 ; READ C-RAM SPEC
;MISC CONTROL FUNCTIONS
IRLOAD= 14 ; LOAD THE IR FROM AD
DRLTCH= 15 ; LOAD D-RAM LATCHES
CLRRUN= 10 ; CLEAR RUN FLIP-FLOP
SETRUN= 11 ; SET RUN FLIP-FLOP
CONBUT= 12 ; THE CONTINUE BUTTON
LDAR= 77 ; LOAD THE AR
;MBOX CONTROL FUNCTIONS
LDMBXA= 71 ; LOAD MEMORY TO CACHE SELECTOR
LDCHAN= 70 ; LOAD CHANNEL DIAGNOSTIC CONDITIONS
;PI CONTROL FUNCTIONS
READ0= 100 ; PI (READ STATUS 0)
READ1= 101 ; PI (READ STATUS 1)
READ2= 102 ; PI (READ STATUS 2)
READ3= 103 ; PI (READ STATUS 3)
;DATA PATH CONTROL FUNCTIONS
DPAR =120 ; AR
DPBR =121 ; BR
DPMQ =122 ; MQ
DPFM =123 ; FM
DPFMA =114 ; FM ADR
DPBRX =124 ; BRX
DPARX =125 ; ARX
DPADX =126 ; ADX
DPAD =127 ; AD
DPPC =153 ; PC
DPVMA =157 ; VMA
DPVMHD =157 ; VMA HELD
DPADB =153 ; ADDRESS BREAK
DPERG =167 ; E-BUS REGISTER
DPFE =132 ; FE 05-09
DPFE1 =133 ; FE 00-04
DPSC =130 ; SC 05-09
DPSC1 =131 ; SC 00-04
.SBTTL KL10 EBOX MACRO DEFINITIONS, 4-JUNE-75
;MACRO TO TURN 36 BIT WORDS INTO 5 UPSIDE DOWN BYTES
.MACRO WD36 A,B,C
.NLIST SRC
.BYTE <377&C>,<<<C&7400>/400>!<<B&17>*20>>,<<B&7760>/20>
.BYTE <A&377>,<<A&7400>/400>
.LIST SRC
.ENDM
;PDP10 CPU INSTRUCTION MACRO. TAKES 5 ARGUMENTS AS IN NORMAL
;10 CODE. 5 FIELDS MUST BE PRESENT (4 FIELD SEPARATORS)
;BUT THE AD,AC,I, AND XR FIELDS MAY BE LEFT BLANK AND IF SO,
;WILL ASSEMBLE AS ZERO. THE OP FIELD MUST NOT BE LEFT BLANK.
.MACRO I10 OP,CAC,CI,CAD,CXR
ADH=0
ADL=0
.IF NB CAD
.IRPC AD1,CAD
.IIF GE <ADL-10000>,ADH=ADL/10000
ADL=10*<ADL&7777>+AD1
.ENDM
.ENDC
.IIF B CAC,AC=0
.IIF NB CAC,AC=CAC
.IIF B CI,I=0
.IIF NB CI,I=CI
.IIF B CXR,XR=0
.IIF NB CXR,XR=CXR
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<AC&1*200+<I*100+<XR*4>>+<ADH/2>>
.BYTE <OP&37*10+<AC/2>>,<OP/40>
.LIST SRC
.ENDM I10
;MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
;FOR A 22-BIT ARGUMENT
.MACRO WD22 AD
ADH=0
ADL=0
.IRPC AD1,AD
.IIF GE <ADL-10000>,ADH=<10*ADH>+<ADL/10000>
ADL=10*<ADL&7777>+AD1
.ENDM
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<ADH/2>
.LIST SRC
.ENDM WD22
;PDP10 I/O INSTRUCTION MACRO. TAKES 5 ARGUMENT AS NOTED ABOVE
;IN THE DESCRIPTION OF THE I10 MACRO. THE 8 I/O OP CODES ARE
;DEFINED AS ARE DEVICE CODES APR, PI, PAG, AND CCA.
.MACRO IO10 OP,DV,CI,AD,CXR
.IIF B CI,I=0
.IIF NB CI,I=CI
.IIF B CXR,XR=0
.IIF NB CXR,XR=CXR
BLKO=2
DATAO=3
BLKI=0
DATAI=1
CONO=4
CONI=5
CONSZ=6
CONSO=7
APR=0
PI=4
PAG=10
CCA=14
ADH=0
ADL=0
.IRPC AD1,AD
.IIF GE <ADL-10000>,ADH=ADL/10000
ADL=10*<ADL&7777>+AD1
.ENDM
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<OP&1*200+<I*100+<XR*4>>+<ADH/2>>
.BYTE <DV&374+<OP/2>>,<DV/400+16>
.LIST SRC
.ENDM IO10
;THIS IS A MACRO TO WAIT FOR A DONE FLAG
.MACRO WFZERO BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
91$: BIT #BITSEL,@.DIAG1 ;TEST BIT
BEQ 92$ ;LEAVE IF BIT ZERO(OK)
DEC (SP) ;DECREMENT CNT
BNE 91$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 92$
JSR R1,$DFTIM
92$: TST (SP)+ ;RESET STACK & CONTINUE
.ENDM
;THIS MACRO IS A WAIT FOR FLAG MACRO.
;IT WAITS FOR A TEST BIT TO GO TO ONE
;FROM A ZERO
.MACRO WFONE BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
93$: BIT #BITSEL,@.STDTE ;TEST BIT
BNE 94$ ;LEAVE IF NOW A ONE(OK)
DEC (SP) ;DECREMENT CNT
BNE 93$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 94$
JSR R1,$DFTIM
94$: TST (SP)+ ;RESET STACK
.ENDM
;.NLIST
.ENDC ; DTEASB
;.LIST
;.NLIST
.IF DF DTEBBD
;.LIST
.SBTTL *BBD* DTE20 DEVICE REGISTER AND BIT DEFINITIONS, 2-JAN-75
DTEADR= 164000 ;ADDRESS OF (FIRST) DTE20 DEVICE REGISTER BLOCK
DTESIZ= 000040 ;SPACING BETWEEN CONSECUTIVE DTE20'S
DTEMAX= 4 ;MAXIMUM NUMBER OF DTE20'S ON ONE PDP-11
DTESZS= 5 ;SHIFT TO CONVERT DTE ADDRESS TO DTE #
.IF DF DTEDEF
;OFFSETS FROM THE BASE OF THE DTE20 DEVICE REGISTER BLOCK
;TO SPECIFIC 10/11 INTERFACE RAM LOCATIONS AND REGISTERS.
; THE FIRST 12 REGISTERS ARE NOT INITIALIZED BY "INIT" (BECAUSE THEY ARE IN RAMS)
DLYCNT= 00 ;DELAY COUNT (ADDRESS XXXX00)
DEXWD1= 02 ;DEPOSIT OR EXAMINE WORD 1 (ADDRESS XXXX02)
DEXWD2= 04 ;DEPOSIT OR EXAMINE WORD 2 (ADDRESS XXXX04)
DEXWD3= 06 ;DEPOSIT OR EXAMINE WORD 3 (ADDRESS XXXX06)
TENAD1= 10 ;10 ADDRESS WORD 1 FOR DEX (ADDRESS XXXX10)
TENAD2= 12 ;10 ADDRESS WORD 2 FOR DEX (ADDRESS XXXX12)
TO10BC= 14 ;TO10 BYTE COUNT (ADDRESS XXXX14)
TO11BC= 16 ;TO11 BYTE COUNT (ADDRESS XXXX16)
TO10AD= 20 ;TO10 PDP11 MEMORY ADDRESS (ADDRESS XXXX20)
TO11AD= 22 ;TO11 PDP11 MEMORY ADDRESS (ADDRESS XXXX22)
TO10DT= 24 ;TO10 PDP11 DATA WORD (ADDRESS XXXX24)
TO11DT= 26 ;TO11 PDP11 DATA WORD (ADDRESS XXXX26)
; THE LAST 4 REGISTERS ARE INITIALIZED BY "INIT" (BECAUSE THEY ARE IN FLIP-FLOPS)
DIAG1= 30 ;DIAGNOSTIC WORD 1 (ADDRESS XXXX30)
DIAG2= 32 ;DIAGNOSTIC WORD 2 (ADDRESS XXXX32)
STATUS= 34 ;10/11 INTERFACE STATUS WORD (ADDRESS XXXX34)
DIAG3= 36 ;DIAGNOSTIC WORD 3 (ADDRESS XXXX36)
.ENDC
; THE FOLLOWING ARE THE ADDRESSES OF THE DTE20 INTERRUPT VECTORS
DTEIV0= 170 ;INTERRUPT VECTOR FOR DTE20 #0
DTEIV1= 174 ;INTERRUPT VECTOR FOR DTE20 #1
DTEIV2= 270 ;INTERRUPT VECTOR FOR DTE20 #2
DTEIV3= 274 ;INTERRUPT VECTOR FOR DTE20 #3
; THE FOLLOWING MACRO (DTEVEC) DYNAMICLY COMPUTES THE INTERRUPT
; VECTOR ADDRESS ASSOCIATED WITH A PARTICULAR DTE20.
; THE FIRST ARGUMENT (DTEDRB) IS A REGISTER OR MEMORY LOCATION
; WHICH CONTAINS THE BASE ADDRESS OF THE DEVICE REGISTER BLOCK
; FOR A PARTICULAR DTE20.
; THE SECOND ARGUMENT (DTEIVB) IS A REGISTER OR MEMORY LOCATION
; INTO WHICH THIS MACRO WILL STORE THE BASE ADDRESS OF THE INTERRUPT
; VECTOR ASSOCIATED WITH THE SAME DTE20.
.MACRO DTEVEC DTEDRB,DTEIVB,?LABEL
MOVB DTEDRB,DTEIVB
.NTYPE DTE$T0,DTEIVB
.IF NE DTE$T0&70 ;IS "DTEIVB" A REGISTER?
.IFT
CLRB DTEIVB+1
.ENDC
ADD #DTEIV0,DTEIVB ;THIS MACRO DEPENDS ON THE BIT
BIT #DTESIZ,DTEIVB ;PATTERNS IN THE DEVICE REGISTER
BNE LABEL ;ADDRESSES AND INTERRUPT VECTOR
SUB #DTESIZ+DTEIV0-DTEIV1,DTEIVB ;ADDRESSES.
LABEL:
.ENDM DTEVEC
;BIT ASSIGNMENTS FOR 10/11 INTERFACE REGISTERS
;BIT ASSIGNMENTS FOR TENAD1
DEP=BIT15 ;MODE BIT FOR DEPOSIT (0=EXAMINE)
F1=BIT7 ;HIGH ORDER BIT OF FAST AC BLOCK
F2=BIT6 ;LOW " " " " " "
;BIT ASSIGNMENTS FOR TO10BC
INT11=BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
;BIT ASSIGNMENTS FOR TO11BC
INT10=BIT15 ;SET DONE AND INTERRUPT BOTH 10 AND 11
ZSTOP=BIT14 ;STOP ON NULL (ZERO) CHARACTER
;BIT ASSIGNMENTS FOR TO10AD AND TO11AD
BYTE2=BIT0 ;TWO EIGHT-BIT BYTES PER WORD
;BIT ASSIGNMENTS FOR DIAG1 (WRITE)
DPULSE=BIT7 ;PULSE THE KL10 CLOCK
PULSE=BIT4!BIT0 ;SINGLE PULSE THE 10/11 CLOCK (ALSO SETS
;10/11 DIAGNOSTIC MODE)
DBUSEN=BIT3 ;DIAGNOSTIC BUS ENABLE
DCSRT=BIT3 ;DIAGNOSTIC COMMAND START (NEW NAME FOR DBUSEN)
DSEND=BIT2 ;SEND THE EBUS DURING DIAGNOSTIC FUNCTION
DIKL10=BIT1 ;KL10 DIAGNOSTIC MODE
D1011=BIT0 ;10/11 INTERFACE DIAGNOSTIC MODE
;BIT ASSIGNMENTS FOR DIAG1 (READ)
TO10=BIT7 ;INTERFACE MAJOR STATE = TO10 TRANSFER
DEX=BIT6 ; " " " = DEPOSIT OR EXAMINE
TO11=BIT5 ; " " " = TO11 TRANSFER
VEC04=BIT4 ;VECTOR INTERRUPT ADDRESS BIT 4
VEC03=BIT3 ; " " " " 3
VEC02=BIT2 ; " " " " 2
;BIT ASSIGNMENTS FOR DIAG2 (WRITE)
EDONES=BIT14 ;SET EBUS DONE
STHOLD=BIT7 ;STAY IN CURRENT MAJOR STATE
CLEAR=BIT6 ;PERFORM DIAGNOSTIC CLEAR
;BIT ASSIGNMENTS FOR DIAG2 (READ)
;BIT ASSIGNMENTS FOR DIAG3 (READ)
RAMIS0=BIT7 ;RFM=0 (ALL ZEROES COMING OUT OF RAM)
RFMAD0=BIT1 ;RFM ADDRESS BIT 0
RFMAD1=BIT8 ; " " " 1
RFMAD2=BIT9 ; " " " 2
RFMAD3=BIT10 ; " " " 3
;BIT ASSIGNMENTS FOR STATUS (WRITE)
DON10S=BIT15 ;SET TO10 DONE
DON10C=BIT14 ;CLEAR TO10 DONE
ERR10S=BIT13 ;SET TO10 ERROR
ERR10C=BIT12 ;CLEAR TO10 ERROR
INT11S=BIT11 ;SET 10 REQ INTERRUPT (INTERRUPTS 11)
INT11C=BIT10 ;CLEAR 10 REQ INTERRUPT (REMOVES INTERRUPT TO 11)
PERCLR=BIT9 ;CLEAR -11 MEMORY PARITY ERROR
INT10S=BIT8 ;SET REQUEST 10 INTERRUPT (INTERRUPTS 10)
DON11S=BIT7 ;SET TO11 DONE
DON11C=BIT6 ;CLEAR TO11 DONE
ERR11S=BIT1 ;SET TO11 ERROR
ERR11C=BIT0 ;CLEAR TO11 ERROR
;BIT ASSIGNMENTS FOR STATUS (READ)
TO10DN=BIT15 ;TO10 DONE
PI10OF=BIT14 ;THIS DTE20 IS NOT TRYING TO INTERRUPT THE -10
TO10ER=BIT13 ;TO 10 ERROR (NPR TIMEOUT OR BUS ERROR)
INTR11=BIT12 ;11 INTERRUPT PENDING
DOOR10=BIT11 ;10 REQUESTING 11 INTERRUPT (DOORBELL FROM 10)
DXWRD1=BIT10 ;DEPOSIT OR EXAMINE WORD ONE
PARERR=BIT9 ;-11 MEMORY PARITY ERROR
DOOR11=BIT8 ;REQUEST 10 INTERRUPT (DOORBELL FROM 11)
TO11DN=BIT7 ;TO11 DONE
EBSEL=BIT6 ;E BUFFER SELECT
NULSTP=BIT5 ;NULL STOP
DEAD10=BIT4 ;KL10 STOPPED
DBUSON=BIT3 ;DIAGNOSTIC BUS ENABLED
DEXDON=BIT2 ;DEPOSIT OR EXAMINE DONE
TO11ER=BIT1 ;TO 11 ERROR (NPR TIMEOUT OR BUS ERROR)
; FUNCTION SELECT CODES
STPCLK =010 ; STOP CLOCK
STRCLK =011 ; START CLOCK
SSCLK =014 ; SINGLE STEP THE CLOCK
CLRMR =016 ; CLEAR MR RESET
SETMR =017 ; SET MR RESET
BRCLK =015 ; BURST THE CLOCK
LDCLK =012 ; LOAD CLOCK BURST COUNTER & RATE
CLKCND =101 ; READ CLOCK CONDITION
LDRAM1 =030 ; LOAD D-RAM DATA
LDRAM2 =031
LDRAM3 =032
RDRAMA =131 ; READ D-RAM ADDRESS
RDRAM1 =132 ; READ D-RAM DATA
RDRAM2 =133
DRAMAB =132 ; D-RAM A & B
DRAMJ =133 ; D-RAM J
LCRAM1 =040 ; LOAD C-RAM DATA
LCRAM2 =041
LCRAM3 =042
LCRAM4 =043
LCRAM5 =044
LCRAMA =047 ; LOAD C-RAM ADDRESS
RCRAM1 =140 ; READ C-RAM DATA AND ADDRESS
RCRAM2 =141 ; READ C-RAM DATA
RCRAM3 =142
RCRAM4 =143
RELCTR =000 ; RELINQUISH CONTROL OF THE TRANSLATOR
DIAGRD =001 ; SET TRANSLATOR IN 10 TO 11 DIRECTION
DIAGLD =002 ; SET TRANSLATOR IN 11 TO 10 DIRECTION
IRLOAD =003 ; ENABLE LOADING OF THE AR & IR REGISTERS
DRLTCH =005 ; LOAD D-RAM LATCHES
CLRRUN =007 ; CLEAR RUN FLIP-FLOP
SETRUN =006 ; SET RUN FLIP-FLOP
CONBUT =004 ; THE CONTINUE BUTTON
READ0 =110 ; PI (READ STATUS 0)
READ1 =111 ; PI (READ STATUS 1)
READ2 =112 ; PI (READ STATUS 2)
READ3 =113 ; PI (READ STATUS 3)
DPAR =120 ; AR (DATA PATH)
DPBR =121 ; BR
DPMQ =122 ; MQ
DPFM =123 ; FM
DPBRX =124 ; BRX
DPARX =125 ; ARX
DPADX =126 ; ADX
DPAD =127 ; AD
DPFE =133 ; FE
DPSC =131 ; SC
DPERG =157 ; E-BUS REGISTER
RDPCH =130 ; READ PC 18-26
RDPCL =131 ; READ PC 27-35
RDVMAH =132 ; READ VMA 18-26
RDVMAL =133 ; READ VMA 27-35
MCHLTLP =42 ; U CODE HALT LOOP ADDRESS
.SBTTL *BBD* KL10 EBOX MACRO DEFINITIONS, 4-MAR-75
;MACRO TO TURN 36 BIT WORDS INTO 5 UPSIDE DOWN BYTES
.MACRO WD36 A,B,C
.NLIST SRC
.BYTE <377&C>,<<<C&7400>/400>!<<B&17>*20>>,<<B&7760>/20>
.BYTE <A&377>,<<A&7400>/400>
.LIST SRC
.ENDM
;PDP10 CPU INSTRUCTION MACRO. TAKES 5 ARGUMENTS AS IN NORMAL
;10 CODE. 5 FIELDS MUST BE PRESENT (4 FIELD SEPARATORS)
;BUT THE AD,AC,I, AND XR FIELDS MAY BE LEFT BLANK AND IF SO,
;WILL ASSEMBLE AS ZERO. THE OP FIELD MUST NOT BE LEFT BLANK.
.MACRO I10 OP,CAC,CI,CAD,CXR
ADH=0
ADL=0
.IF NB CAD
.IRPC AD1,CAD
.IIF GE <ADL-10000>,ADH=ADL/10000
ADL=10*<ADL&7777>+AD1
.ENDM
.ENDC
.IIF B CAC,AC=0
.IIF NB CAC,AC=CAC
.IIF B CI,I=0
.IIF NB CI,I=CI
.IIF B CXR,XR=0
.IIF NB CXR,XR=CXR
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<AC&1*200+<I*100+<XR*4>>+<ADH/2>>
.BYTE <OP&37*10+<AC/2>>,<OP/40>
.LIST SRC
.ENDM I10
;MACRO TO GENERATE A RIGHT JUSTIFIED 3-BYTE VALUE
;FOR A 22-BIT ARGUMENT
.MACRO WD22 AD
ADH=0
ADL=0
.IRPC AD1,AD
.IIF GE <ADL-10000>,ADH=<10*ADH>+<ADL/10000>
ADL=10*<ADL&7777>+AD1
.ENDM
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<ADH/2>
.LIST SRC
.ENDM WD22
;PDP10 I/O INSTRUCTION MACRO. TAKES 5 ARGUMENT AS NOTED ABOVE
;IN THE DESCRIPTION OF THE I10 MACRO. THE 8 I/O OP CODES ARE
;DEFINED AS ARE DEVICE CODES APR, PI, PAG, AND CCA.
.MACRO IO10 OP,DV,CI,AD,CXR
.IIF B CI,I=0
.IIF NB CI,I=CI
.IIF B CXR,XR=0
.IIF NB CXR,XR=CXR
BLKO=2
DATAO=3
BLKI=0
DATAI=1
CONO=4
CONI=5
CONSZ=6
CONSO=7
APR=0
PI=4
PAG=10
CCA=14
ADH=0
ADL=0
.IRPC AD1,AD
.IIF GE <ADL-10000>,ADH=ADL/10000
ADL=10*<ADL&7777>+AD1
.ENDM
.NLIST SRC
.BYTE <ADL&377>,<<ADL/400>!<ADH*200&377>>,<OP&1*200+<I*100+<XR*4>>+<ADH/2>>
.BYTE <DV&374+<OP/2>>,<DV/400+16>
.LIST SRC
.ENDM IO10
;THIS IS A MACRO TO WAIT FOR A DONE FLAG
.MACRO WFZERO BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
91$: BIT #BITSEL,@.DIAG1 ;TEST BIT
BEQ 92$ ;LEAVE IF BIT ZERO(OK)
DEC (SP) ;DECREMENT CNT
BNE 91$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 92$
JSR R1,$DFTIM
92$: TST (SP)+ ;RESET STACK & CONTINUE
.ENDM
;THIS MACRO IS A WAIT FOR FLAG MACRO.
;IT WAITS FOR A TEST BIT TO GO TO ONE
;FROM A ZERO
.MACRO WFONE BITSEL
MOV #2500.,-(SP) ;SET TIMEOUT CNT
93$: BIT #BITSEL,@.STDTE ;TEST BIT
BNE 94$ ;LEAVE IF NOW A ONE(OK)
DEC (SP) ;DECREMENT CNT
BNE 93$ ;CONTINUE LOOP
TST RPTFLG ;OTHERWISE TIME OUT
BNE 94$
JSR R1,$DFTIM
94$: TST (SP)+ ;RESET STACK
.ENDM
;.NLIST
.ENDC ; DTEBBD
;.LIST
;.NLIST
.IF DF DVASB
;.LIST
.SBTTL DEVICE SYMBOL DEFINITIONS, 4-JUNE-75
; PRIORITY LEVELS FOR SERVICE ROUTINES.
TPILEV= PR6 ; TERMINAL PRIORITY LEVEL
NXMPIL= PR7 ; "NON-X-MEM" PRIORITY LEVEL
DHRPS= TPILEV ; DH11 RECEIVER PRIORITY
DHTPS= DHRPS ; DH11 TRANSMITTER
DLRPS= DHRPS ; DL11
DLTPS= DLRPS
KWLPS= DHRPS ; KW11 PRIORITY LEVEL
NXMPS= NXMPIL ; "NON-X-MEM" PRIORITY LEVEL
; BIT DEFINITIONS FOR THE PARAMETER WORD.
PDHDNS= 11 ; DH11 DEVICE NUMBER SHIFT
PDHDNM= 7000 ; DH11 DEVICE NUMBER MASK
PDHLNS= 4 ; DH11 LINE NUMBER SHIFT
PDHLNM= 360 ; DH11 LINE NUMBER MASK
PDHLSS= 0 ; DH11 LINE SPEED SHIFT
PDHLSM= 17 ; DH11 LINE SPEED MASK
PDLFCS= PDHLNS ; DL11 FILLER CLASS SHIFT
PDLFCM= PDHLNS ; DL11 FILLER CLASS MASK
; OTHER DEVICES.
DP11BA= 174770 ; DP11 DEVICE REGISTERS BASE ADDRESS
DP11RS= 10 ; DP11 DEVICE REGISTER SIZE
DP11VS= 10 ; DP11 INTERRUPT VECTOR SIZE
DM11BA= 170500 ; DM11 DEVICE REGISTER BASE ADDRESS
DM11RS= 10 ; DM11 DEVICE REGISTER SIZE
DM11VS= 4 ; DM11 INTERRUPT VECTOR SIZE
DR11BA= 167770 ; DR11 DEVICE REGISTER BASE ADDRESS
DR11RS= 10 ; DR11 DEVICE REGISTER SIZE
DR11VS= 10 ; DR11 INTERRUPT VECTOR SIZE
;.NLIST
.ENDC ;DVASB
;.LIST
;.NLIST
.IF DF KWASB
;.LIST
.SBTTL KW11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
KWLIV= 100 ; VECTOR ADDRESS
KWLKS= 177546 ; LINE CLOCK STATUS DEVICE ADDRESS
KWLKE= 100 ; LINE CLOCK INTERRUPT ENABLE BIT
.SBTTL MM11 DEVICE REGISTERS AND BIT ASSIGNMENTS, 4-JUNE-75
MMLPIV= 114 ;VECTOR ADDRESS
MMLPBA= 172100 ;1ST MM11-LP DEVICE ADDRESS
MMLPEA= 172136 ;LAST MM11-LP DEVICE ADDRESS
MMERRF= BIT15 ;ERROR FLAG
MMADDM= 7740 ;ADDRESS MASK
MMADDS= 5 ;ADDRESS SHIFT
MMWWP= BIT2 ;WRITE WRONG PARITY
MMPIE= BIT0 ;PARITY INTERRUPT ENABLE
;.NLIST
.ENDC ;KWASB
;.LIST
;.NLIST
.IF DF DLASB
;.LIST
.SBTTL DL11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
DLRIV= 60 ; RECEIVER VECTOR ADDRESS
DLTIV= DLRIV+4 ; TRANSMITTER VECTOR ADDRESS
DLBA= 177560 ; BASE FOR DEVICE ADDRESSES
DLRCSR= 0 ; RECEIVER STATUS REGISTER
DLRBUF= 2 ; RECEIVER BUFFER REGISTER
DLXCSR= 4 ; TRANSMITTER STATUS REGISTER
DLXBUF= 6 ; TRANSMITTER BUFFER REGISTER
; BIT DEFINITIONS FOR "DLRCSR"- RECEIVER CONTROL STATUS REGISTER.
DLDSC= BIT15 ; DATA STATUS CHANGE
DLRI= BIT14 ; RING INDICATOR
DLCTS= BIT13 ; CLEAR TO SEND
DLCD= BIT12 ; CARRIER DETECT
DLRA= BIT11 ; RECEIVER ACTIVE
DLSRD= BIT10 ; SECONDARY RECEIVED DATA
DLRD= BIT7 ; RECEIVER DONE
DLRIE= BIT6 ; RECEIVER INTERRUPT ENABLE
DLDIE= BIT5 ; DATA SET INTERRUPT ENABLE
DLSTD= BIT3 ; SECONDARY TRANSMITTED DATA
DLRTS= BIT2 ; REQUEST TO SEND
DLDTR= BIT1 ; DATA TERMINAL READY
DLRE= BIT0 ; READER ENABLE
; BIT DEFINITIONS FOR "DLRBUF"- RECEIVER BUFFER.
DLERR= BIT15 ; ERROR
DLORE= BIT14 ; OVERRUN ERROR
DLFE= BIT13 ; FRAMING ERROR
DLRDPE= BIT12 ; RECEIVED DATA PARITY ERROR
DLRDS= 0 ; RECEIVED DATA SHIFT
DLRDM= 377 ; RECEIVED DATA MASK
; BIT DEFINITIONS FOR "DLXCSR"- TRANSMITTER CONTROL STATUS REGISTER.
DLTR= BIT7 ; TRANSMITTER READY
DLTIE= BIT6 ; TRANSMITTER INTERRUPT ENABLE
DLMAIN= BIT2 ; MAINTENANCE
DLBRK= BIT0 ; BREAK
; BIT DEFINITIONS FOR "DLXBUF"- TRANSMITTER BUFFER.
DLTDS= 0 ; TRANSMITTER DATA SHIFT
DLTDM= 377 ; TRANSMITTER DATA MASK
;.NLIST
.ENDC ;DLASB
;.LIST
;.NLIST
.IF DF DHASB
;.LIST
.SBTTL DH11 DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
DHIVBA= 300 ; INTERRUPT VECTOR BASE ADDRESS
DHRIV= 0 ; RECEIVER VECTOR ADDRESS
DHTIV= DHRIV+4 ; TRANSMITTER VECTOR ADDRESS
DHBA= 160020 ; BASE FOR DEVICE ADDRESSES
DHSCR= 0 ; SYSTEM CONTROL REGISTER
DHNRCR= 2 ; NEXT RECEIVER CHARACTER REGISTER
DHLPR= 4 ; LINE PARAMETER REGISTER
DHCAR= 6 ; CURRENT ADDRESS REGISTER
DHBCR= 10 ; BYTE COUNT REGISTER
DHBAR= 12 ; TRANSMIT BUFFER ACTIVE REGISTER
DHTBR= 14 ; TRANSMIT BREAK REGISTER
DHSSR= 16 ; SILO STATUS REGISTER
; BIT DEFINITIONS FOR "DHSCR"- STATUS CONTROL REGISTER.
DHTI= BIT15 ; TRANSMITTER INTERRUPT
DHSI= BIT14 ; STORAGE INTERRUPT
DHTNIE= BIT13 ; TRANSMITTER AND NON-X-MEM INTERRUPT ENABLE
DHSIE= BIT12 ; STORAGE INTERRUPT ENABLE
DHMC= BIT11 ; MASTER CLEAR
DHNXM= BIT10 ; NON-X-MEM
DHMAIN= BIT9 ; MAINTENANCE
DHCNXM= BIT8 ; CLEAR NON-X-MEM BIT
DHRI= BIT7 ; RECEIVER INTERRUPT
DHRIE= BIT6 ; RECEIVER INTERRUPT ENABLE
DHMES= 4 ; MEMORY EXTENSION SHIFT
DHMEM= 60 ; MEMORY EXTENSION MASK
DHLSS= 0 ; LINE SELECTION SHIFT
DHLSM= 17 ; LINE SELECTION MASK
; BIT DEFINITIONS FOR "DHNRCR"- NEXT RECEIVER CHARACTER REGISTER.
DHDP= BIT15 ; DATA PRESENT
DHORE= BIT14 ; OVERRUN ERROR
DHFE= BIT13 ; FRAMING ERROR
DHRDPE= BIT12 ; RECEIVER DATA PARITY ERROR
DHRLNS= 10 ; RECEIVER LINE NUMBER SHIFT
DHRLNM= 7400 ; RECEIVER LINE NUMBER MASK
DHRDS= 0 ; RECEIVER DATA SHIFT
DHRDM= 377 ; RECEIVER DATA MASK
; BIT DEFINITIONS FOR "DHLPR"- LINE PARAMETER REGISTER.
DHAEE= BIT15 ; AUTO-ECHO ENABLE
DHHD= BIT14 ; HALF-DUPLEX
DHTSS= 12 ; TRANSMITTER SPEED SHIFT
DHTSM= 36000 ; TRANSMITTER SPEED MASK
DHRSS= 6 ; RECEIVER SPEED SHIFT
DHRSM= 1700 ; RECEIVER SPEED MASK
DHEP= BIT5 ; EVEN PARITY
DHPE= BIT4 ; PARITY ENABLE
DHTSB= BIT2 ; TWO STOP BITS
DHCLS= 0 ; CHARACTER LENGTH SHIFT
DHCLM= 3 ; CHARACTER LENGTH MASK
DHCL5= 0 ; CHARACTER LENGTH - 5 BITS
DHCL6= 1 ; CHARACTER LENGTH - 6 BITS
DHCL7= 2 ; CHARACTER LENGTH - 7 BITS
DHCL8= 3 ; CHARACTER LENGTH - 8 BITS
; BIT DEFINITIONS FOR "DHSSR"- SILO STATUS REGISTER.
DHSFLS= 10 ; SILO FILL LEVEL SHIFT
DHSFLM= 37400 ; SILO FILL LEVEL MASK
DHREMS= 6 ; READ EXTENDED MEMORY SHIFT
DHREMM= 300 ; READ EXTENDED MEMORY MASK
DHSALS= 0 ; SILO ALARM LEVEL SHIFT
DHSALM= 77 ; SILO ALARM LEVEL MASK
;.NLIST
.ENDC ;DHASB
;.LIST
;.NLIST
.IF DF TAASB
;.LIST
.SBTTL TA11 (CASSETTE) DEVICE REGISTER AND BIT DEFINITIONS, 4-JUNE-75
TACS= 177500 ;CONTROL AND STATUS REGISTER
TADB= TACS+2 ;DATA BUFFER REGISTER
TAIV= 260 ;INTERRUPT VECTOR
; BIT ASSIGNMENTS WITHIN THE CONTROL AND STATUS REGISTER
TAGO= 1 ;GO = START OPERATION
TAFUNC= 16 ;"FUNCTION TO BE PERFORMED" FIELD
TAWFG= 0*2 ;"WRITE FILE GAP" FUNCTION
TAWRIT= 1*2 ;"WRITE DATA" FUNCTION
TAREAD= 2*2 ;"READ DATA" FUNCTION
TASRF= 3*2 ;"SPACE REVERSE FILE" FUNCTION
TASRB= 4*2 ;"SPACE REVERSE BLOCK (RECORD)" FUNCTION
TASFF= 5*2 ;"SPACE FORWARD FILE" FUNCTION
TASFB= 6*2 ;"SPACE REVERSE BLOCK (RECORD)" FUNCTION
TAREWD= 7*2 ;"REWIND" FUNCTION
TAILBS= 20 ;INITIATE LAST BYTE SEQUENCE
TAREDY= 40 ;READY
TAINTE= 100 ;INTERRUPT ENABLE
TARQST= 200 ;TRANSFER REQUEST
TAUNIT= 400 ;UNIT SELECTION
TAOFFL= 1000 ;UNIT OFF LINE
TATERR= 2000 ;TIMING ERROR (LOST DATA)
TAFGAP= 4000 ;FILE GAP
TALOCK= 10000 ;WRITE LOCKED
TALEAD= 20000 ;CLEAR LEADER
TABCHK= 40000 ;BLOCK CHECK (BAD CRC AFTER READ)
TAEROR= 100000 ;ERROR (ERROR SUMMARY BIT)
;.NLIST
.ENDC ;TAASB
;.LIST
;.NLIST
.IF DF RXASB
;.LIST
.SBTTL RX11/RX01 (FLOPPY) REGISTERS AND BIT DEFINITIONS, 22-JULY-75
;RX11 STANDARD DEVICE ADDRESSES
RXCS= 177170 ;COMMAND STATUS REGISTER
RXDB= 177172 ;DATA BUFFER REGISTER
RXSA= 177172 ;SECTOR ADDRESS REGISTER
RXTA= 177172 ;TRACK ADDRESS REGISTER
RXES= 177172 ;ERROR STATUS REGISTER
RXIV= 264 ;INTERRUPT VECTOR ADDRESS
;RX11 FUNCTION CODES
RXFBUF= 0 ;FILL BUFFER
RXEBUF= 2 ;EMPTY BUFFER
RXWSEC= 4 ;WRITE SECTOR
RXRSEC= 6 ;READ SECTOR
RXRSTAT=12 ;READ STATUS
RXWDDS= 14 ;WRITE DELETED DATA SECTOR
RXRERR= 16 ;READ ERROR REGISTER
;RX11 COMMAND AND STATUS REGISTER BIT DEFINITIONS
RXGO= 1 ;GO
RXU1= 20 ;RX01 UNIT # 1
RXDONE= 40 ;DONE
RXIE= 100 ;INTERRUPT ENABLE
RXTREQ= 200 ;TRANSFER REQUEST
RXINI= 40000 ;INITIALIZE
RXERROR=100000 ;ERROR
;RX11 ERROR STATUS REGISTER BIT DEFINITIONS
RXCRCE= 1 ;CRC ERROR
RXPARE= 2 ;PARITY ERROR
RXIDONE=4 ;INITIALIZE DONE
RXDDD= 100 ;DELETED DATA DETECTED
RXDRDY =200 ;DRIVE READY
;.NLIST
.ENDC ;RXASB
;.LIST
;.NLIST
.IF DF TCASB
;.LIST
.SBTTL TC11 (DECTAPE) DEVICE REGISTERS AND BIT DEFINITIONS, 4-JUNE-75
;DECTAPE PARAMETERS
TCILO= BIT12 ;ILLEGAL OPERATION
TCSELE= BIT11 ;SELECTION ERROR
TCIE= BIT6 ;INTERRUPT ENABLE
TCDO= BIT0 ;DO OPERATION
TCRDATA=BIT2 ;READ DATA
TCWDATA=BIT3+BIT2 ;WRITE DATA
TCRNUM= BIT1 ;READ BLOCK NUMBER
TCREV= BIT11 ;REVERSE DIRECTION
TCPAR= BIT14 ;PARITY ERROR
TCBLKM= BIT10 ;BLOCK MISSED
TCDATM= BIT9 ;DATA MISSED
TCMTE= BIT13 ;MARK TRACK ERROR
TCERR= BIT15 ;DECTAPE ERROR
TCRDY= BIT7 ;READY
TCSOFT= TCPAR+TCBLKM+TCDATM+TCMTE
TCST= 177340 ;STATUS REGISTER
TCCM= 177342 ;COMMAND REGISTER
TCCM1= 177343 ;COMMAND UPPER BYTE
TCWC= 177344 ;WORD COUNT REGISTER
TCBA= 177346 ;BUS MEMORY ADDRESS
TCDT= 177350 ;DATA REGISTER
;.NLIST
.ENDC ;TCASB
;.LIST
;.NLIST
.IF DF RPASB
;.LIST
.SBTTL RH11/RP04 REGISTER AND BIT DEFINITIONS, 4-JUNE-75
BLKSIZ= 256. ;DISK BLOCK SIZE (IN 16-BIT WORDS)
IFESIZ= 3 ;INDEX FILE ENTRY SIZE (IN 16-BIT WORDS)
FDESIZ= 16. ;FILE DIRECTORY ENTRY SIZE (IN 16-BIT WORDS)
RPCS1= 0 ;OFFSET TO RH11/RP04 CONTROL & STATUS REGISTER 1
RPTRE= BIT14 ;"TRANSFER ERROR" BIT IN RPCS1
RPMCPE= BIT13 ;"MASSBUS CONTROL BUS PARITY ERROR" BIT IN RPCS1
RPDVA= BIT11 ;"DRIVE AVAILABLE" BIT IN RPCS1
RPRDY= BIT7 ;"CONTROLLER READY" BIT IN RPCS1
RPPRST= 21 ;READ-IN PRESET FUNCTION IN RPCS1
RPPACK= 23 ;PACK ACKNOWLEDGE (SET VV) FUNCTION IN RPCS1
RPWTFN= 61 ;WRITE DATA FUNCTION IN RPCS1
RPRDFN= 71 ;READ DATA FUNCTION IN RPCS1
RPWC= 2 ;OFFSET TO RH11∂RP04 WORD COUNT REGISTER
RPBA= 4 ;OFFSET TO RH11/RP04 UNIBUS ADDRESS REGISTER
RPDA= 6 ;OFFSET TO RH11/RP04 TRACK & SECTOR ADDRESS REGISTER
RPCS2= 10 ;OFFSET TO RH11/RP04 CONTROL & STATUS REGISTER 2
RPCLR= BIT5 ;"CONTROLLER (AND MASSBUS) CLEAR" BIT IN RPCS2
RPDS= 12 ;OFFSET TO RH11/RP04 DRIVE STATUS REGISTER
RPATA= BIT15 ;"ATTENTION ACTIVE" BIT IN RPDS
RPERR= BIT14 ;"COMPOSITE ERROR" BIT IN RPDS
RPMOL= BIT12 ;"MEDIUM ON-LINE" BIT IN RPDS
RPDPR= BIT8 ;"DRIVE PRESENT" BIT IN RPDS
RPDRY= BIT7 ;"DRIVE READY" BIT IN RPDS
RPVV= BIT6 ;"VOLUME VALID" BIT IN RPDS
RPOF= 32 ;OFFSET TO RH11/RP04 OFFSET REGISTER (CONTAINING FMT22)
RPFMT= BIT12 ;"FMT22" (16-BIT WORDS) BIT IN RPOF
RPECI= BIT11 ;"ERROR CORRECTION CODE INHIBIT" BIT IN RPOF
RPDC= 34 ;OFFSET TO RH11/RP04 DESIRED CYLINDER REGISTER
;.NLIST
.ENDC ;RPASB
;.LIST
;.NLIST
.IF DF LPASB
;.LIST
.SBTTL LP20 REGISTER AND BIT DEFINITIONS, 27-JUNE-75
LP20A= 177440 ;LP20 1ST CONTROLLER ADDRESS
LP20B= 177460 ;LP20 2ND CONTROLLER ADDRESS
LPAVEC= 210 ;LP20A INTERRUPT VECTOR
LPBVEC= 200 ;LP20B INTERRUPT VECTOR
LPCSRA= 0 ;OFFSET TO LP20 PRIMARY STATUS REGISTER
LPERR= BIT15 ;"ERROR" BIT IN LPCSRA
LPPZRO= BIT14 ;"PAGZRO" BIT IN LPCSRA
LPUCHR= BIT13 ;"UNDCHR" BIT IN LPCSRA
LPVRDY= BIT12 ;"UNDCHR" BIT IN LPCSRA
LPONLN= BIT11 ;"ONLINE" BIT IN LPCSRA
LPDELH= BIT10 ;"DELHLD" BIT IN LPCSRA
LPLINI= BIT9 ;"LOINIT" BIT IN LPCSRA
LPRERR= BIT8 ;"RSTERR" BIT IN LPCSRA
LPDONE= BIT7 ;"DONE" BIT IN LPCSRA
LPIENB= BIT6 ;"INTENB" BIT IN LPCSRA
LPBA17= BIT5 ;"BUSA17" BIT IN LPCSRA
LPBA16= BIT4 ;"BUSA16" BIT IN LPCSRA
LPVLOD= BIT3 ;"VFULOD" BIT IN LPCSRA
LPTMOD= BIT2 ;"TSTMOD" BIT IN LPCSRA
LPPENB= BIT1 ;"PARENB" BIT IN LPCSRA
LPGO= BIT0 ;"GO" BIT IN LPCSRA
LPCSRB= 2 ;OFFSET TO LP20 ERROR AND TEST REGISTER
LPTPBT= BIT12 ;"LPTPBT" BIT IN LPCSRB
LPT02= BIT10 ;"TEST02" BIT IN LPCSRB
LPT01= BIT9 ;"TEST01" BIT IN LPCSRB
LPT00= BIT8 ;"TEST00" BIT IN LPCSRB
LPOFFL= BIT7 ;"OFFLIN" BIT IN LPCSRB
LPVERR= BIT6 ;"VFUERR" BIT IN LPCSRB
LPTPAR= BIT5 ;"LPTPAR" BIT IN LPCSRB
LPMPAR= BIT4 ;"MEMPAR" BIT IN LPCSRB
LPRPAR= BIT3 ;"RAMPAR" BIT IN LPCSRB
LPSYNT= BIT2 ;"SYNTIM" BIT IN LPCSRB
LPDEMT= BIT1 ;"DEMTIM" BIT IN LPCSRB
LPGOER= BIT0 ;"GOERR" BIT IN LPCSRB
LPBSAD= 4 ;OFFSET TO LP20 DMA BUS ADDRESS REGISTER
LPBCTR= 6 ;OFFSET TO LP20 DMA BYTE COUNTER REGISTER
LPPCTR= 10 ;OFFSET TO LP20 PAGE COUNTER REGISTER
LPRAMD= 12 ;OFFSET TO LP20 RAM DATA REGISTER
LPCBUF= 14 ;OFFSET TO LP20 CHAR BUFFER REGISTER (BYTE)
LPCCTR= 15 ;OFFSET TO LP20 COLUMN COUNTER REGISTER (BYTE)
LPCKSM= 16 ;OFFSET TO LP20 CHECKSUM REGISTER (BYTE)
LPPDAT= 17 ;OFFSET TO LP20 PRINTER DATA REGISTER (BYTE)
;.NLIST
.ENDC ;LPASB
;.LIST